#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>

typedef int hpdatatype;

typedef struct heap
{
	hpdatatype* a;
	int capicity;
	int size;
}heap;

void adjustdown(hpdatatype* p, int si);
void adjustup(hpdatatype* p, int child);
void swap(hpdatatype* p, hpdatatype* c);
void heapinit(heap* php);
void heapprint(heap* php);
void heappush(heap* php, hpdatatype x);
void heappop(heap* php);
hpdatatype heaptop(heap* php);
void heapdestory(heap* php);
bool heapempty(heap* php);
int heapsize(heap* php);

void heapsort(heap* php, hpdatatype a[],int sz);